package telas.recibo;

import dao.ClienteDao;
import dao.FuncionarioDao;
import dao.ReciboDao;
import java.util.Date;
import java.util.List;
import javax.swing.JOptionPane;
import modelo.Clientes;
import modelo.Funcionarios;
import modelo.Recibos;
import telas.Index;
import util.Relatorios;
import util.Utilitario;

/**
 *
 * @author gilberto.costa 28/03/2012 15:20
 */
public class Fr_recibo extends javax.swing.JInternalFrame {

    private List<Clientes> listCliente;
    private List<Funcionarios> listFuncionarios;
    private String ids_recibos, concatena = ",";

    public Fr_recibo() {
        initComponents();
        Utilitario.eventosteclado(jLabel1, "IMPRIMERECIBO", rootPane);
        listFuncionarios = FuncionarioDao.retornaUsuarios();
//        listCliente = ClienteDao.retornaClientes();
        populaComboFuncionarios();
        MesVencimento.setSelectedIndex(new Date().getMonth());//combo selecionado com o mes atual
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jPanel2 = new javax.swing.JPanel();
        PorCliente = new javax.swing.JRadioButton();
        PorVencimento = new javax.swing.JRadioButton();
        jTextField1 = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        MesVencimento = new javax.swing.JComboBox();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        labelTotRecibos = new javax.swing.JLabel();
        jPanel3 = new javax.swing.JPanel();
        jLabel2 = new javax.swing.JLabel();
        codigoCliente = new javax.swing.JLabel();
        nomeCliente = new javax.swing.JLabel();
        PorFuncionario = new javax.swing.JRadioButton();
        ComboFuncionarios = new javax.swing.JComboBox();
        jLabel3 = new javax.swing.JLabel();
        ComboDiaFuncionario = new javax.swing.JComboBox();

        setIconifiable(true);
        setTitle("Geração de recibos");
        setToolTipText("");

        jPanel2.setBackground(new java.awt.Color(194, 194, 183));
        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Dados do cliente", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, new java.awt.Color(0, 44, 255)));

        PorCliente.setSelected(true);
        PorCliente.setText("Imprimir por  cliente - F2");
        PorCliente.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                PorClienteActionPerformed(evt);
            }
        });

        PorVencimento.setText("Imprimir por vencimento");
        PorVencimento.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                PorVencimentoActionPerformed(evt);
            }
        });

        jTextField1.setEnabled(false);

        jLabel1.setText("Recibo com vencimento no mês de :");

        MesVencimento.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" }));

        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/print.jpg"))); // NOI18N
        jButton1.setText("Imprimir");
        jButton1.setToolTipText("Imprimir recibo");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/Button Close.png"))); // NOI18N
        jButton2.setText("Sair");
        jButton2.setToolTipText("Sair");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "Observações", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, null, new java.awt.Color(0, 44, 255)));

        jLabel2.setForeground(new java.awt.Color(255, 0, 0));
        jLabel2.setText("* Valor e dia de vencimento são informados no cadastro de cada cliente");

        javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
        jPanel3.setLayout(jPanel3Layout);
        jPanel3Layout.setHorizontalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, 569, Short.MAX_VALUE))
        );
        jPanel3Layout.setVerticalGroup(
            jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel3Layout.createSequentialGroup()
                .addComponent(jLabel2)
                .addGap(0, 12, Short.MAX_VALUE))
        );

        codigoCliente.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 1, true));

        nomeCliente.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 1, true));

        PorFuncionario.setText("Imprimir por Funcionário");
        PorFuncionario.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                PorFuncionarioActionPerformed(evt);
            }
        });

        ComboFuncionarios.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Selecione" }));
        ComboFuncionarios.setEnabled(false);
        ComboFuncionarios.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                ComboFuncionariosActionPerformed(evt);
            }
        });

        jLabel3.setText("Dia Venc.");

        ComboDiaFuncionario.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Todos" }));
        ComboDiaFuncionario.setEnabled(false);

        javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
        jPanel2.setLayout(jPanel2Layout);
        jPanel2Layout.setHorizontalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup()
                .addGap(190, 190, 190)
                .addComponent(jButton1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 93, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 22, Short.MAX_VALUE)
                .addComponent(labelTotRecibos, javax.swing.GroupLayout.PREFERRED_SIZE, 232, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                            .addComponent(PorCliente, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(PorFuncionario, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addGap(8, 8, 8)
                        .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addGroup(jPanel2Layout.createSequentialGroup()
                                .addComponent(ComboFuncionarios, javax.swing.GroupLayout.PREFERRED_SIZE, 276, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(6, 6, 6)
                                .addComponent(jLabel3)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(ComboDiaFuncionario, javax.swing.GroupLayout.PREFERRED_SIZE, 80, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(jPanel2Layout.createSequentialGroup()
                                .addComponent(codigoCliente, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(nomeCliente, javax.swing.GroupLayout.PREFERRED_SIZE, 387, javax.swing.GroupLayout.PREFERRED_SIZE))))
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(MesVencimento, javax.swing.GroupLayout.PREFERRED_SIZE, 165, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jPanel2Layout.createSequentialGroup()
                        .addComponent(PorVencimento)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addGap(0, 0, Short.MAX_VALUE))
        );
        jPanel2Layout.setVerticalGroup(
            jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel2Layout.createSequentialGroup()
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(PorCliente, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 25, Short.MAX_VALUE)
                    .addComponent(codigoCliente, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 25, Short.MAX_VALUE)
                    .addComponent(nomeCliente, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 25, Short.MAX_VALUE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(PorFuncionario, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(ComboFuncionarios, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jLabel3, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(ComboDiaFuncionario, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(PorVencimento, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(MesVencimento, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(24, 24, 24)
                .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(labelTotRecibos, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(jButton1)
                        .addComponent(jButton2)))
                .addContainerGap(23, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        jTabbedPane1.addTab("Impressão de recibos", jPanel1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jTabbedPane1)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jTabbedPane1)
        );

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-685)/2, (screenSize.height-354)/2, 685, 354);
    }// </editor-fold>//GEN-END:initComponents

    private void PorClienteActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_PorClienteActionPerformed
        if (PorCliente.isSelected()) {
            PorVencimento.setSelected(false);
            jTextField1.setEnabled(false);
            ComboFuncionarios.setEnabled(false);
            PorFuncionario.setSelected(false);
            ComboDiaFuncionario.setEnabled(false);
//            jComboBox1.setEnabled(true);
        }
//        else {
//            PorCliente.setSelected(false);
//            PorVencimento.setSelected(true);
////            jComboBox1.setEnabled(false);
//            jTextField1.setEnabled(true);
//        }
    }//GEN-LAST:event_PorClienteActionPerformed
    private void populaComboFuncionarios() {
        for (Funcionarios cli : listFuncionarios) {
            ComboFuncionarios.addItem(cli.getNome_func());
        }
    }
    private void PorVencimentoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_PorVencimentoActionPerformed
        if (PorVencimento.isSelected()) {
            PorCliente.setSelected(false);
            jTextField1.setEnabled(true);
            PorFuncionario.setSelected(false);
            ComboFuncionarios.setEnabled(false);
            ComboDiaFuncionario.setEnabled(false);
        }
//        else {
//            PorCliente.setSelected(true);
//            PorVencimento.setSelected(false);
//            jTextField1.setEnabled(false);
////            jComboBox1.setEnabled(true);
//        }
    }//GEN-LAST:event_PorVencimentoActionPerformed

    public static void populaDadosCliente(Long idUsuario) {
        Clientes c = ClienteDao.retornaClientesPorId(idUsuario);
        if (c != null) {
            codigoCliente.setText("" + c.getId_cliente());
            nomeCliente.setText(c.getRazaoSocial());
            PorCliente.setSelected(true);
            PorVencimento.setSelected(false);
        } else {
            codigoCliente.setText(null);
            nomeCliente.setText(null);
        }
    }
    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
        try {
            if (PorCliente.isSelected()) {
                if (!codigoCliente.getText().toString().equalsIgnoreCase("")) {
                    Clientes cli = new Clientes();
                    cli = ClienteDao.retornaClientesPorId(Long.parseLong(codigoCliente.getText().trim()));
                    if (cli != null) {
//                        for (Clientes c : listCliente) {
//                            if (c.getRazaoSocial().toString().equalsIgnoreCase(jComboBox1.getSelectedItem().toString())) {
//                                cli = c;
//                                break;
//                            }
//                        }
                        // salvando na tabela de recibos
                        Recibos rec;
                        //se ja existir faz UPDATE senão INSERT
                        rec = ReciboDao.verificaExistenciaDeRecibosParaMesmoVencimento(Utilitario.montaDataVencimentoAndPeriodoAte(cli.getDiaVencimento(), MesVencimento.getSelectedIndex()), cli.getId_cliente());
                        if (rec == null) {
                            rec = new Recibos();
                            rec.setDatacadastro(new Date());
                        }
                        rec.setMesAno("" + (MesVencimento.getSelectedIndex() + 1) + "/" + (new Date().getYear() + 1900));
                        rec.setCliente(cli);
                        rec.setDataalteracao(new Date());
                        rec.setDt_reimpressao(new Date());
                        rec.setMes(Utilitario.retornaMesPorExtenso(MesVencimento.getSelectedIndex()));
                        rec.setPeriodode(Utilitario.montaPeriodoInicial(cli.getDiaVencimento(), MesVencimento.getSelectedIndex()));
                        rec.setPeriodoate(Utilitario.montaDataVencimentoAndPeriodoAte(cli.getDiaVencimento(), MesVencimento.getSelectedIndex()));
                        rec.setDatavencimento(rec.getPeriodoate());
                        rec.setReferente("Manutenção e conservação de piscinas em geral");
                        rec.setValor(cli.getValorRecibo());
                        rec.setValorextenso(Utilitario.valorPorExtenso("" + Utilitario.formataMoeda((cli.getValorRecibo()))));

                        rec = rec.salvar();
                        ids_recibos = "";
                        ids_recibos = "" + rec.getId();
                        //chamar relatorio e passar o numero inicial e final do recibo
                        labelTotRecibos.setText("Total de recibos a ser impresso: " + 1);
                        Relatorios.geraRecibos("Visualizar", ids_recibos);
                    }
                } else {
                    JOptionPane.showMessageDialog(null, "Selecione um cliente!!");
                }
            } else if (PorVencimento.isSelected()) {
                List<Clientes> listCli;
                if (jTextField1.getText().toString().equalsIgnoreCase("")) {
                    JOptionPane.showMessageDialog(null, "Informe o dia de vencimento!!");
                } else if (!Utilitario.IsNumber(jTextField1.getText().toString())) {
                    JOptionPane.showMessageDialog(null, "O dia deve ser um numero de 0 a 31!!");
                } else if (Integer.parseInt(jTextField1.getText()) < 0 || Integer.parseInt(jTextField1.getText()) > 31) {
                    JOptionPane.showMessageDialog(null, "O dia deve ser de 0 a 31!!");
                } else {
                    Integer cont = 0;
                    ids_recibos = "";
                    listCli = ClienteDao.retornaClientesPorDiaDeVencimento(Integer.parseInt(jTextField1.getText().trim()));
                    //faz o for para todos os clientes com o vencimento informado salvando o recibo
                    for (Clientes c : listCli) {
                        // salvando na tabela de recibos
                        Recibos rec;
                        //se ja existir faz UPDATE senão INSERT
                        rec = ReciboDao.verificaExistenciaDeRecibosParaMesmoVencimento(Utilitario.montaDataVencimentoAndPeriodoAte(c.getDiaVencimento(), MesVencimento.getSelectedIndex()), c.getId_cliente());
                        if (rec == null) {
                            rec = new Recibos();
                            rec.setDatacadastro(new Date());
                        }
                        rec.setMesAno("" + (MesVencimento.getSelectedIndex() + 1) + "/" + (new Date().getYear() + 1900));
                        rec.setCliente(c);
                        rec.setDataalteracao(new Date());
                        rec.setDt_reimpressao(new Date());
                        rec.setMes(Utilitario.retornaMesPorExtenso(MesVencimento.getSelectedIndex()));
                        rec.setPeriodode(Utilitario.montaPeriodoInicial(c.getDiaVencimento(), MesVencimento.getSelectedIndex()));
                        rec.setPeriodoate(Utilitario.montaDataVencimentoAndPeriodoAte(c.getDiaVencimento(), MesVencimento.getSelectedIndex()));
                        rec.setDatavencimento(rec.getPeriodoate());
                        rec.setReferente("Manutenção e conservação de piscinas em geral");
                        rec.setValor(c.getValorRecibo());
                        rec.setValorextenso(Utilitario.valorPorExtenso("" + Utilitario.formataMoeda((c.getValorRecibo()))));

                        rec = rec.salvar();
                        //chamar relatorio e passar o numero inicial e final do recibo
                        if (cont == 0) {
                            ids_recibos = ids_recibos + rec.getId();
                        } else {
                            ids_recibos = ids_recibos + concatena + rec.getId();
                        }
                        cont++;
                    }
                    if (!ids_recibos.toString().equalsIgnoreCase("")) {
                        Relatorios.geraRecibos("Imprimirwww", ids_recibos);
                        labelTotRecibos.setText("Total de recibos a ser impresso: " + listCli.size());
                    } else {
                        JOptionPane.showMessageDialog(null, "Não foi encontrado nenhum vencimento para o dia " + jTextField1.getText());
                    }
                }
            } else if (PorFuncionario.isSelected()) {
                List<Clientes> listCli = null;
                if (ComboFuncionarios.getSelectedItem().toString().equalsIgnoreCase("Selecione")) {
                    JOptionPane.showMessageDialog(null, "Selecione o Funcionário!");
                    ComboFuncionarios.requestFocus();
                } else {
                    //pegando o funcionario selecionado
//                    ComboDiaFuncionario.addItem("Todos");
                    Long f = null;
                    for (Funcionarios fun : listFuncionarios) {
                        if (ComboFuncionarios.getSelectedItem().toString().equalsIgnoreCase(fun.getNome_func().toString())) {
                            f = fun.getId_func();
                        }
                    }
                    //retornando clientes de acordo com a pesquisa selecionada
                    if (f != null) {
                        if (ComboDiaFuncionario.getSelectedItem().toString().equalsIgnoreCase("Todos")) {
                            listCli = ClienteDao.retornaClientesPorFuncionario(f);
                        } else {
                            listCli = ClienteDao.retornaClientesPorFuncionario(f, Integer.parseInt(ComboDiaFuncionario.getSelectedItem().toString()));
                        }
                    }
                    if (!listCli.isEmpty()) {
                        Integer cont = 0;
                        ids_recibos = "";
                        for (Clientes c : listCli) {
                            // salvando na tabela de recibos
                            Recibos rec;
                            //se ja existir faz UPDATE senão INSERT
                            rec = ReciboDao.verificaExistenciaDeRecibosParaMesmoVencimento(Utilitario.montaDataVencimentoAndPeriodoAte(c.getDiaVencimento(), MesVencimento.getSelectedIndex()), c.getId_cliente());
                            if (rec == null) {
                                rec = new Recibos();
                                rec.setDatacadastro(new Date());
                            }
                            rec.setMesAno("" + (MesVencimento.getSelectedIndex() + 1) + "/" + (new Date().getYear() + 1900));
                            rec.setCliente(c);
                            rec.setDataalteracao(new Date());
                            rec.setDt_reimpressao(new Date());
                            rec.setMes(Utilitario.retornaMesPorExtenso(MesVencimento.getSelectedIndex()));
                            rec.setPeriodode(Utilitario.montaPeriodoInicial(c.getDiaVencimento(), MesVencimento.getSelectedIndex()));
                            rec.setPeriodoate(Utilitario.montaDataVencimentoAndPeriodoAte(c.getDiaVencimento(), MesVencimento.getSelectedIndex()));
                            rec.setDatavencimento(rec.getPeriodoate());
                            rec.setReferente("Manutenção e conservação de piscinas em geral");
                            rec.setValor(c.getValorRecibo());
                            rec.setValorextenso(Utilitario.valorPorExtenso("" + Utilitario.formataMoeda((c.getValorRecibo()))));

                            rec = rec.salvar();
                            //chamar relatorio e passar o numero inicial e final do recibo
                            if (cont == 0) {
                                ids_recibos = ids_recibos + rec.getId();
                            } else {
                                ids_recibos = ids_recibos + concatena + rec.getId();
                            }
                            cont++;
                        }
                        //imprimindo recibos
                        if (!ids_recibos.toString().equalsIgnoreCase("")) {
                            Relatorios.geraRecibos("Imprimirwww", ids_recibos);
                            labelTotRecibos.setText("Total de recibos a ser impresso: " + listCli.size());
                        } else {
                            JOptionPane.showMessageDialog(null, "Não foi encontrado nenhum vencimento para o dia " + jTextField1.getText());
                        }
                    } else {
                        JOptionPane.showMessageDialog(null, "Nenhum recibo a ser impresso!!");
                    }
                }
            } else {
                JOptionPane.showMessageDialog(null, "Selecione uma opção de pesquisa!");
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Erro: " + e);
        }

    }//GEN-LAST:event_jButton1ActionPerformed

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
        dispose();
        Index.fr_recibos = null;
    }//GEN-LAST:event_jButton2ActionPerformed

    private void PorFuncionarioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_PorFuncionarioActionPerformed
        if (PorFuncionario.isSelected()) {
            PorVencimento.setSelected(false);
            PorCliente.setSelected(false);
            jTextField1.setEnabled(false);
            ComboFuncionarios.setEnabled(true);
            ComboDiaFuncionario.setEnabled(true);
        }
//        else {
//            PorCliente.setSelected(false);
//            PorVencimento1.setSelected(true);
//            jTextField2.setEnabled(false);
//            jTextField1.setEnabled(true);
//        }
    }//GEN-LAST:event_PorFuncionarioActionPerformed

    private void ComboFuncionariosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_ComboFuncionariosActionPerformed
        //pegando o funcionario selecionado
        while (ComboDiaFuncionario.getItemCount() > 0) {
            ComboDiaFuncionario.removeAllItems();
        }
        
        Long f = null;
        for (Funcionarios fun : listFuncionarios) {
            if (ComboFuncionarios.getSelectedItem().toString().equalsIgnoreCase(fun.getNome_func().toString())) {
                f = fun.getId_func();
            }
        }
        //retornando os clientes do funcionario selecionado para pegar o dia de vencimento
        if (f != null) {
            List<Integer> clientes = ClienteDao.retornaDiasDeVencimentoReferenteAoFuncionarioDistinct(f);
            if (!clientes.isEmpty()) {
                ComboDiaFuncionario.addItem("Todos");
                for (Integer cli : clientes) {
                    ComboDiaFuncionario.addItem(cli);
                }
            }
        }
    }//GEN-LAST:event_ComboFuncionariosActionPerformed
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JComboBox ComboDiaFuncionario;
    private javax.swing.JComboBox ComboFuncionarios;
    private javax.swing.JComboBox MesVencimento;
    private static javax.swing.JRadioButton PorCliente;
    private static javax.swing.JRadioButton PorFuncionario;
    private static javax.swing.JRadioButton PorVencimento;
    private static javax.swing.JLabel codigoCliente;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JPanel jPanel2;
    private javax.swing.JPanel jPanel3;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JLabel labelTotRecibos;
    private static javax.swing.JLabel nomeCliente;
    // End of variables declaration//GEN-END:variables
}
